﻿using System;
using System.Collections.Generic;

using System.Text;

namespace Rance.Battle
{
    class 全体鼓舞1 : 主动技能
    {
        public int Level = 2;
        public int 兵力系数 = 250;
        public 全体鼓舞1()
        {
            this.技能速度 = 160;
            this.消耗行动点 = Battle.消耗行动点.两点;
            this.技能目标 = Battle.技能目标.己方全体;
            this.技能站位要求 = Battle.技能站位要求.无;
        }

        public override void Excute(技能环境 环境)
        {
            base.Excute(环境);

            List<int> list = new List<int>();
            int maxItem = 环境.目标List.Count * 4;
            int value = Convert.ToInt32(环境.施放者.实际智 / 2 + 环境.施放者.兵力 / 兵力系数);
            value = maxItem < value ? maxItem : value;
            Random r = new Random(DateTime.Now.Millisecond);
            for (int i = 0; i < value; i++)
            {
                int index = 环境.队伍状况.战场.乱数表.Random(0, maxItem);
                while (list.Contains(index))
                    index = 环境.队伍状况.战场.乱数表.Random(0, maxItem);

                list.Add(index);
            }
            list.Sort((m1,m2) => m1.CompareTo(m2));

            赋予Behavior behavior = new 赋予Behavior();
            环境.行动结果.ResultList.Add(behavior);

            foreach (var item in list)
            {
                赋予 赋予 = null;
                int index = item / 4;
                var 角色 = 环境.目标List[index];
                int temp = item - index * 4;

                角色Struct 角色Struct = new Battle.角色Struct(){ID = 角色.ID , Name = 角色.Name};
                var detail = behavior.Find(角色Struct);
                if (detail == null)
                {
                    detail = new 赋予BehaviorDetail() { 角色 = 角色Struct };
                    behavior.List.Add(detail);
                }

                switch (temp)
                {
                    case 0:
                        赋予 = new 赋予()
                        {
                            Level = Level,
                            是否单回合 = false
                        };
                        if (角色.Set攻击赋予(赋予))
                        {
                            detail.List.Add("攻击");
                        }
                        break;
                    case 1:
                        赋予 = new 赋予()
                        {
                            Level = Level,
                            是否单回合 = false
                        };
                        if (角色.Set防御赋予(赋予))
                        {
                            detail.List.Add("防御");
                        }
                        break;
                    case 2:
                        赋予 = new 赋予()
                        {
                            Level = Level,
                            是否单回合 = false
                        };
                        if (角色.Set速度赋予(赋予))
                        {
                            detail.List.Add("速度");
                        }
                        break;
                    case 3:
                        赋予 = new 赋予()
                        {
                            Level = Level,
                            是否单回合 = false
                        };
                        if (角色.Set智力赋予(赋予))
                        {
                            detail.List.Add("智力");
                        }
                        break;
                }
            }
        }
    }

    class 全体鼓舞2 : 全体鼓舞1
    {
        public 全体鼓舞2()
        {
            this.兵力系数 = 150;
        }
    }
}
